<HTML>

<SCRIPT>
function setFocus() {	
	if ((navigator.appName != "Netscape") && (parseFloat(navigator.appVersion) == 2)) {
	return;
	} else {
	self.focus();
	}
}
</SCRIPT><HEAD><TITLE>Index</TITLE></HEAD>

<BODY
	BGCOLOR		= #FFFFFF
	TEXT = #000000
onLoad="setFocus()";
>

<P>Names of design patterns appear in small capitals: e.g., A<FONT
SIZE=-1>DAPTER</FONT>.  Page numbers in bold indicate the definition
of a term. Numbers in italics indicate a diagram for the term.
Letters after a diagram's page number indicate the kind of diagram:
a "c" denotes a class diagram, an "i" denotes an interaction diagram,
and an "o" denotes an object diagram. For example, <I>88co</I>
means that a class and object diagram appears on page 88.</P>

<H2>C</H2>

<DL>

<DT>C 
<A HREF="chap1fs.htm#ada" TARGET="_mainDisplayFrame">4</A>
</DT>

<DT>Calder, Paul 
<A HREF="chap2fs.htm#footnote1" TARGET="_mainDisplayFrame">33</A>,
<A HREF="chap2fs.htm#editor_recursive_composition" TARGET="_mainDisplayFrame">38</A>
</DT>

<DT>callback function
<A HREF="pat5bfs.htm#applicability" TARGET="_mainDisplayFrame"><B>235</B></A>
</DT>

<DT>Caretaker</DT>

<DD>participant of M<FONT SIZE=-1>EMENTO</FONT>
<A HREF="pat5ffs.htm#applicability" TARGET="_mainDisplayFrame">285</A>,
<A HREF="pat5ffs.htm#structure" TARGET="_mainDisplayFrame"><I>285c</I></A>,
<A HREF="pat5ffs.htm#collaborations" TARGET="_mainDisplayFrame"><I>286i</I></A>
</DD>

<DT>Cargill, Tom
<A HREF="pat5hfs.htm#implementation" TARGET="_mainDisplayFrame">308</A>
</DT>

<DT>C<FONT SIZE=-1>HAIN OF</FONT> R<FONT SIZE=-1>ESPONSIBILITY</FONT>
<A HREF="pat5afs.htm#top" TARGET="_mainDisplayFrame"><B>223</B></A>
</DT>

<DD>combined with C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">166</A>,
<A HREF="pat5afs.htm#relatedpatterns" TARGET="_mainDisplayFrame">232</A>
</DD>

<DD>compared with M<FONT SIZE=-1>EDIATOR</FONT>
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame">348</A>
</DD>

<DD>compared with O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame">348</A>
</DD>

<DD>defined by parent references
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">166</A>,
<A HREF="pat5afs.htm#knownuses" TARGET="_mainDisplayFrame">232</A>
</DD>

<DD>in catalog summary
<A HREF="chap1fs.htm#top" TARGET="_mainDisplayFrame">8</A>
</DD>

<DD>use of delegation in 
<A HREF="chap1fs.htm#intro_inheritance_versus_composition" TARGET="_mainDisplayFrame">21</A>
</DD>

<a name="ChangeManager"></a>
<DT>ChangeManager
<A HREF="pat5e.htm#knownuses" onClick="top.load('5e');"282</A>
<A HREF="pat5gfs.htm#aspect" TARGET="_mainDisplayFrame">299</A>,
<A HREF="pat5gfs.htm#aspect" TARGET="_mainDisplayFrame"><I>300c</I></A>
</DT>

<DT>Character
<A HREF="chap2fs.htm#editor_recursive_composition" TARGET="_mainDisplayFrame">38</A>,
<A HREF="chap2fs.htm#editor_recursive_composition" TARGET="_mainDisplayFrame"><I>38c</I></A>
</DT>

<DT>character</DT>

<DD>represented as object
<A HREF="chap2fs.htm#editor_recursive_composition" TARGET="_mainDisplayFrame">38</A>,
<A HREF="pat4ffs.htm#motivation" TARGET="_mainDisplayFrame">195-196</A>
</DD>

<DT>Cheshire Cat
<A HREF="pat4bfs.htm#implementation" TARGET="_mainDisplayFrame">155</A>
</DT>

<a name="Choices"></a>
<DT>Choices operating system</DT>

<DD>use of F<FONT SIZE=-1>ACADE</FONT><A HREF="pat4efs.htm#knownuses" TARGET="_mainDisplayFrame">192</A>
</DD>

<DD>use of P<FONT SIZE=-1>ROXY</FONT>
<A HREF="pat4gfs.htm#idiom" TARGET="_mainDisplayFrame">209</A>
</DD>

<DT><a name="class"></a>class
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame"><B>14</B></A>,
<A HREF="chapAfs.htm#class" TARGET="_mainDisplayFrame"><B>359</B></A>
</DT>

<DD>abstract, <I>see</I> <A HREF="index-A.htm#abstract class" target="TEXT">abstract class</A></DD>

<DD>adapter, <I>see</I> <A HREF="index-A.htm#adapter" target="TEXT">adapter, class</A></DD>

<DD>compared with type
<A HREF="chap1fs.htm#absclass" TARGET="_mainDisplayFrame">16</A>
</DD>

<DD>concrete, <I>see</I> <A HREF="index-C.htm#concrete class" target="TEXT">concrete class</A></DD>

<DD>derived
<A HREF="chapAfs.htm#top" TARGET="_mainDisplayFrame"><B>360</B></A>
</DD>

<DD>friend, <I>see</I> <A HREF="index-F.htm#friend class" target="TEXT">friend class</A></DD>

<DD>inability to alter
<A HREF="chap1fs.htm#aggacq" TARGET="_mainDisplayFrame">24</A>
</DD>

<DD>inheritance, <I>see</I> <A HREF="index-I.htm#inheritance" target="TEXT">inheritance</A></DD>

<DD>instance
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame"><B>15</B></A>
</DD>

<DD>library, <I>see</I> <A HREF="index-T.htm#toolkit" target="TEXT">toolkit</A></DD>

<DD>mixin, <I>see</I> <A HREF="index-M.htm#mixin class" target="TEXT">mixin class</A></DD>

<DD>notation for 
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame">15</A>,
<A HREF="chapBfs.htm#abstractclass" TARGET="_mainDisplayFrame">363</A>
</DD>

<DD>parent
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame"><B>15</B></A>,
<A HREF="chapAfs.htm#inheritance" TARGET="_mainDisplayFrame"><B>361</B></A>
</DD>

<DD>subclass
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame"><B>15</B></A>
</DD>

<DD>template, <I>see</I> <A HREF="index-T.htm#template" target="TEXT">template</A></DD>

<DT><a name="class diagram"></a>class diagram
<A HREF="chapBfs.htm#chapter_notation" TARGET="_mainDisplayFrame"><B>363</B></A>,
<A HREF="chapBfs.htm#notation_object_diagram_notation" TARGET="_mainDisplayFrame"><I>365c</I></A>,
<A HREF="chapAfs.htm#abstractclass" TARGET="_mainDisplayFrame">359</A>
</DT>

<DT><a name="class hierarchy"></a>class hierarchy</DT>

<DD>adding operations to
<A HREF="chap6fs.htm#sec6-3" TARGET="_mainDisplayFrame">356</A>
</DD>

<DD>connecting parallel
<A HREF="pat3cfs.htm#consequences" TARGET="_mainDisplayFrame">109</A>,
<A HREF="pat5dfs.htm#motivation" TARGET="_mainDisplayFrame">258</A>
</DD>

<DD>explosion
<A HREF="chap1fs.htm#depalg" TARGET="_mainDisplayFrame">25</A>,
<A HREF="chap2fs.htm#top" TARGET="_mainDisplayFrame">43</A>,
<A HREF="pat4bfs.htm#motivation" TARGET="_mainDisplayFrame">151</A>,
<A HREF="pat4dfs.htm#applicability" TARGET="_mainDisplayFrame">177</A>
</DD>

<DD>minimizing size of
<A HREF="pat3cfs.htm#implementation" TARGET="_mainDisplayFrame">113</A>,
<A HREF="pat3dfs.htm#consequences" TARGET="_mainDisplayFrame">120</A>,
<A HREF="pat4dfs.htm#applicability" TARGET="_mainDisplayFrame">177</A>,
<A HREF="pat5efs.htm#consequences" TARGET="_mainDisplayFrame">277</A>,
<A HREF="pat5ifs.htm#families" TARGET="_mainDisplayFrame">317</A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame">348</A>
</DD>

<DD>visiting multiple
<A HREF="pat5kfs.htm#top" TARGET="_mainDisplayFrame">336</A>
</DD>

<DT><a name="class operation"></a>class operation
<A HREF="chapAfs.htm#classoperation" TARGET="_mainDisplayFrame"><B>359</B></A>
</DT>

<DD>alternatives provided by Singleton
<A HREF="pat3efs.htm#participants" TARGET="_mainDisplayFrame">128</A>
</DD>

<DT>Client</DT>

<DD>participant of A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT>
<A HREF="pat3afs.htm#structure" TARGET="_mainDisplayFrame"><I>88c</I></A>,
<A HREF="pat3afs.htm#participants" TARGET="_mainDisplayFrame">89</A>
</DD>

<DD>participant of A<FONT SIZE=-1>DAPTER</FONT>
<A HREF="pat4afs.htm#participants" TARGET="_mainDisplayFrame">141</A>,
<A HREF="pat4afs.htm#141c" TARGET="_mainDisplayFrame"><I>141c</I></A>
</DD>

<DD>participant of B<FONT SIZE=-1>UILDER</FONT><A HREF="pat3bfs.htm#motivation" TARGET="_mainDisplayFrame">98</A>,
<A HREF="pat3bfs.htm#applicability" TARGET="_mainDisplayFrame"><I>98c</I></A>,
<A HREF="pat3bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>99i</I></A>
</DD>

<DD>participant of C<FONT SIZE=-1>HAIN OF</FONT>
	R<FONT SIZE=-1>ESPONSIBILITY</FONT>
<A HREF="pat5afs.htm#applicability" TARGET="_mainDisplayFrame"><I>225ci</I></A>,
<A HREF="pat5afs.htm#consequences" TARGET="_mainDisplayFrame">226</A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>348i</I></A>
</DD>

<DD>participant of C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#participants" TARGET="_mainDisplayFrame">236</A>,
<A HREF="pat5bfs.htm#structure" TARGET="_mainDisplayFrame"><I>236c</I></A>,
<A HREF="pat5bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>237i</I></A>
</DD>

<DD>participant of C<FONT SIZE=-1>OMPOSITE</FONT>
<A HREF="pat4cfs.htm#motivation" TARGET="_mainDisplayFrame"><I>164c</I></A>,
<A HREF="pat4cfs.htm#participants" TARGET="_mainDisplayFrame">165</A>
</DD>

<DD>participant of F<FONT SIZE=-1>LYWEIGHT</FONT><A HREF="pat4ffs.htm#structure" TARGET="_mainDisplayFrame"><I>198c</I></A>,
<A HREF="pat4ffs.htm#participants" TARGET="_mainDisplayFrame">199</A>
</DD>

<DD>participant of I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#structure" TARGET="_mainDisplayFrame"><I>245c</I></A>,
<A HREF="pat5cfs.htm#participants" TARGET="_mainDisplayFrame">246</A>
</DD>

<DD>participant of P<FONT SIZE=-1>ROTOTYPE</FONT> 119,
<A HREF="pat3dfs.htm#participants" TARGET="_mainDisplayFrame">119</A>,
<A HREF="pat3dfs.htm#structure" TARGET="_mainDisplayFrame"><I>119c</I></A>
</DD>

<DT>client
<A HREF="chap1fs.htm#sect_how_design_patterns_solve_design_problems" TARGET="_mainDisplayFrame"><B>11</B></A>
</DT>

<DD>isolating concrete classes from
<A HREF="pat3afs.htm#consequences" TARGET="_mainDisplayFrame">89</A>
</DD>

<DT>ClockTimer
<A HREF="pat5gfs.htm#samplecode" TARGET="_mainDisplayFrame">302</A>
</DT>

<DT>clone operation
<A HREF="pat3dfs.htm#motivation" TARGET="_mainDisplayFrame">117</A>
</DT>

<DD>used in P<FONT SIZE=-1>ROTOTYPE</FONT>
<A HREF="pat3dfs.htm#motivation" TARGET="_mainDisplayFrame">117</A>
</DD>

<DD>implementing
<A HREF="pat3dfs.htm#implementation" TARGET="_mainDisplayFrame">121</A>
</DD>

<DT>cloned object
<A HREF="pat3dfs.htm#motivation" TARGET="_mainDisplayFrame">117</A>
</DT>

<DD>initializing
<A HREF="pat3dfs.htm#implementation" TARGET="_mainDisplayFrame">121</A>
</DD>

<DT>CLOS
<A HREF="chap1fs.htm#ada" TARGET="_mainDisplayFrame">4</A>,
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">260</A>,
<A HREF="pat5kfs.htm#implementation" TARGET="_mainDisplayFrame">338</A>
</DT>

<DT>closure
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">260</A>,
<A HREF="pat5dfs.htm#clean-up_proxy_for_iterators" TARGET="_mainDisplayFrame">267</A>
</DT>

<DT>Coad, Peter
<A HREF="chap6fs.htm#kentbeck" TARGET="_mainDisplayFrame">357</A>
</DT>

<DT>code structure</DT>

<DD>run-time versus compile-time
<A HREF="chap1fs.htm#Cplusplus" TARGET="_mainDisplayFrame">23</A>
</DD>

<DT>CodeGenerationV<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#abssync" TARGET="_mainDisplayFrame"><I>332c</I></A>
</I></DT>

<DT>Colleague</DT>

<DD>communicating with Mediator<A HREF="pat5efs.htm#implementation" TARGET="_mainDisplayFrame">278</A>,
<A HREF="pat5efs.htm#relatedpatterns" TARGET="_mainDisplayFrame">282</A>
</DD>

<DD>participant of M<FONT SIZE=-1>EDIATOR</FONT>
<A HREF="pat5efs.htm#structure" TARGET="_mainDisplayFrame"><I>276co</I></A>,
<A HREF="pat5efs.htm#participants" TARGET="_mainDisplayFrame">277</A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>348i</I></A>
</DD>

<DT><a name="C<FONT SIZE=-1>OMMAND</FONT>"></a>C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#Command" TARGET="_mainDisplayFrame"><B>233</B></A>
</DT>

<DD>combined with M<FONT SIZE=-1>EMENTO</FONT>
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">239</A>,
<A HREF="pat5ffs.htm#implementation" TARGET="_mainDisplayFrame">287</A>
</DD>

<DD>combined with P<FONT SIZE=-1>ROTOTYPE</FONT>
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">238</A>
</DD>

<DD>in catalog summary
<A HREF="chap1fs.htm#top" TARGET="_mainDisplayFrame">8</A>
</DD>

<DD>use in Lexi
<A HREF="chap2fs.htm#editor_menuitem-command_relationship" TARGET="_mainDisplayFrame">64</A>
</DD>

<DT>Command
<A HREF="chap2fs.htm#top" TARGET="_mainDisplayFrame">60</A>,
<A HREF="chap2fs.htm#editor_partial_command_class_hierarchy" TARGET="_mainDisplayFrame"><I>61c</I></A>,
<A HREF="pat5bfs.htm#Command" TARGET="_mainDisplayFrame">233</A>,
<A HREF="pat5bfs.htm#233c" TARGET="_mainDisplayFrame"><I>233c</I></A>,
<A HREF="pat5bfs.htm#samplecode" TARGET="_mainDisplayFrame">239</A>
</DT>

<DD>configured in MenuItem
<A HREF="chap2fs.htm#editor_menuitem-command_relationship" TARGET="_mainDisplayFrame">61</A>
</DD>

<DD>history of
<A HREF="chap2fs.htm#editor_menuitem-command_relationship" TARGET="_mainDisplayFrame">62</A>
</DD>

<DD>participant of C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#participants" TARGET="_mainDisplayFrame">236</A>,
<A HREF="pat5bfs.htm#structure" TARGET="_mainDisplayFrame"><I>236c</I></A>,
<A HREF="pat5bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>237i</I></A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame"><I>347i</I></A>
</DD>

<DT>command</DT>

<DD>C++ idiom, <I>see</I> <A HREF="index-F.htm#functor" target="TEXT">functor</A></DD>

<DD>copying before execution
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">238</A>
</DD>

<DD>history, <I>see</I> <a href="index-H.htm#history list" target="TEXT">history list</a></DD>

<DD>implemented through C++ templates
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">239</A>,
<A HREF="pat5bfs.htm#samplecode" TARGET="_mainDisplayFrame">240</A>
</DD>

<DD>intelligence of 
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">238</A>
</DD>

<DT>common vocabulary
<A HREF="chap6fs.htm#top" TARGET="_mainDisplayFrame">352</A>
</DT>

<DT>communication</DT>

<DD>encapsulated or distributed 
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame">346</A>
</DD>

<DD>between Strategy and Context
<A HREF="pat5ifs.htm#families" TARGET="_mainDisplayFrame">318</A>
</DD>

<DD>between Visitor and Element
<A HREF="pat5kfs.htm#implementation" TARGET="_mainDisplayFrame">337</A>
</DD>

<DT>compilation dependencies</DT>

<DD>reducing using F<FONT SIZE=-1>ACADE</FONT><A HREF="pat4efs.htm#implementation" TARGET="_mainDisplayFrame">188</A>
</DD>

<DT>Compiler
<A HREF="pat4efs.htm#motivation" TARGET="_mainDisplayFrame">185</A>,
<A HREF="pat4efs.htm#motivation" TARGET="_mainDisplayFrame"><I>186c</I></A>,
<A HREF="pat4efs.htm#samplecode" TARGET="_mainDisplayFrame">191</A>
</DT>

<DT>compiler</DT>

<DD>example in F<FONT SIZE=-1>ACADE</FONT><A HREF="pat4efs.htm#motivation" TARGET="_mainDisplayFrame">185</A>,
<A HREF="pat4efs.htm#motivation" TARGET="_mainDisplayFrame"><I>186c</I></A>,
<A HREF="pat4efs.htm#consequences" TARGET="_mainDisplayFrame">188</A>
</DD>

<DD>implemented using V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#abssyntree" TARGET="_mainDisplayFrame">331</A>
</DD>

<DD>Smalltalk, <I>see</I> <A HREF="index-R.htm#RTL Smalltalk compiler" target="TEXT">RTL Smalltalk compiler</A></DD>

<DT>Component</DT>

<DD>participant of C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat4cfs.htm#structure" TARGET="_mainDisplayFrame"><I>164c</I></A>,
<A HREF="pat4cfs.htm#participants" TARGET="_mainDisplayFrame">165</A>,
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">168</A>
</DD>

<DD>participant of D<FONT SIZE=-1>ECORATOR</FONT> 
<A HREF="pat4dfs.htm#participants" TARGET="_mainDisplayFrame">177</A>,
<A HREF="pat4dfs.htm#structure" TARGET="_mainDisplayFrame"><I>177c</I></A>
</DD>

<DT><a name="C<FONT SIZE=-1>OMPOSITE</FONT>"></a>C<FONT SIZE=-1>OMPOSITE</FONT>
<A HREF="pat4cfs.htm#top" TARGET="_mainDisplayFrame"><B>163</B></A>
</DT>

<DD>caching children of 
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">169</A>
</DD>

<DD>child management
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">167</A>
</DD>

<DD>combined with I<FONT SIZE=-1>NTERPRETER</FONT>
<A HREF="pat5cfs.htm#knownuses" TARGET="_mainDisplayFrame">255</A>
</DD>

<DD>combined with I<FONT SIZE=-1>TERATOR</FONT>
<A HREF="pat5dfs.htm#implementation" TARGET="_mainDisplayFrame">262</A>
</DD>

<DD>combined with V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#implementation" TARGET="_mainDisplayFrame">339</A>
</DD>

<DD>compared with D<FONT SIZE=-1>ECORATOR</FONT>
<A HREF="disc4fs.htm#top" TARGET="_mainDisplayFrame">219</A>,
<A HREF="disc4fs.htm#top" TARGET="_mainDisplayFrame">220</A>
</DD>

<DD>compared with I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#implementation" TARGET="_mainDisplayFrame">247</A>
</DD>

<DD>data structure for
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">169</A>,
<A HREF="pat4cfs.htm#samplecode" TARGET="_mainDisplayFrame">170</A>
</DD>

<DD>in catalog summary
<A HREF="chap1fs.htm#top" TARGET="_mainDisplayFrame">8</A>
</DD>

<DD>interface of
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">167</A>
</DD>

<DD>Lexi's use of
<A HREF="chap2fs.htm#top" TARGET="_mainDisplayFrame">40</A>
</DD>

<DD>parent references
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">166</A>
</DD>

<DD>sharing components
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">166</A>
</DD>

<DD>use in Model/View/Controller
<A HREF="chap1fs.htm#top" TARGET="_mainDisplayFrame">5</A>
</DD>

<a name="Composite"></a>
<DT>Composite</DT>

<DD>participant of C<FONT SIZE=-1>OMPOSITE</FONT><A HREF="pat4cfs.htm#structure" TARGET="_mainDisplayFrame"><I>164c</I></A>,
<A HREF="pat4cfs.htm#participants" TARGET="_mainDisplayFrame">165</A>,
<A HREF="pat4cfs.htm#structure" TARGET="_mainDisplayFrame"><I>165o</I></A>,
<A HREF="pat4cfs.htm#implementation" TARGET="_mainDisplayFrame">168</A>
</DD>

<DT>CompositeEquipment
<A HREF="pat4cfs.htm#samplecode" TARGET="_mainDisplayFrame">171</A>
</DT>

<DT>Composition 
<A HREF="chap2fs.htm#editor_basic_compositor_interface" TARGET="_mainDisplayFrame">41</A>,
<A HREF="chap2fs.htm#42c" TARGET="_mainDisplayFrame"><I>42c</I></A>,
<A HREF="pat5ifs.htm#compositor" TARGET="_mainDisplayFrame">315</A>,
<A HREF="pat5ifs.htm#315c" TARGET="_mainDisplayFrame"><I>315c</I></A>,
<A HREF="pat5ifs.htm#samplecode" TARGET="_mainDisplayFrame">320</A>
</DT>

<DT>composition, <I>see</I> <A HREF="index-O.htm#object composition" target="TEXT">object composition</A></DT>

<DT>Compositor
<A HREF="chap2fs.htm#editor_basic_compositor_interface" TARGET="_mainDisplayFrame">41</A>,
<A HREF="chap2fs.htm#editor_composition_and_compositor_class_relationships" TARGET="_mainDisplayFrame">42</A>,
<A HREF="pat5ifs.htm#compositor" TARGET="_mainDisplayFrame">315</A>,
<A HREF="pat5ifs.htm#315c" TARGET="_mainDisplayFrame"><I>315c</I></A>,
<A HREF="pat5ifs.htm#samplecode" TARGET="_mainDisplayFrame">321</A>
</DT>

<DD>interface
<A HREF="chap2fs.htm#editor_basic_compositor_interface" TARGET="_mainDisplayFrame">41</A>
</DD>

<DT>CompressingStream
<A HREF="pat4dfs.htm#183c" TARGET="_mainDisplayFrame"><I>183c</I></A>,
<A HREF="pat4dfs.htm#183c" TARGET="_mainDisplayFrame">184</A>
</DT>

<a name="concrete class"></a>
<DT>concrete class
<A HREF="chap1fs.htm#abstractclass" TARGET="_mainDisplayFrame"><B>15</B></A>,
<A HREF="chapAfs.htm#concreteclass" TARGET="_mainDisplayFrame"><B>359</B></A>
</DT>

<DD>avoiding specification of
<A HREF="chap1fs.htm#subsect_causes_of_redesign" TARGET="_mainDisplayFrame">24</A>
</DD>

<DD>isolating clients from
<A HREF="pat3afs.htm#consequences" TARGET="_mainDisplayFrame">89</A>
</DD>

<DT>ConcreteAggregate</DT>

<DD>participant of I<FONT SIZE=-1>TERATOR</FONT>
<A HREF="pat5dfs.htm#participants" TARGET="_mainDisplayFrame">259</A>,
<A HREF="pat5dfs.htm#259c" TARGET="_mainDisplayFrame"><I>259c</I></A>
</DD>

<DT>ConcreteBuilder</DT>

<DD>participant of B<FONT SIZE=-1>UILDER</FONT><A HREF="pat3bfs.htm#participants" TARGET="_mainDisplayFrame"><I>98c</I></A>,
<A HREF="pat3bfs.htm#structure" TARGET="_mainDisplayFrame">99</A>,
<A HREF="pat3bfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>99i</I></A>
</DD>

<DT>ConcreteCommand</DT>

<DD>participant of C<FONT SIZE=-1>OMMAND</FONT>
<A HREF="pat5bfs.htm#participants" TARGET="_mainDisplayFrame">236</A>,
<A HREF="pat5bfs.htm#structure" TARGET="_mainDisplayFrame"><I>236c</I></A>,
<A HREF="pat5bfs.htm#implementation" TARGET="_mainDisplayFrame">238</A>
</DD>

<DT>ConcreteComponent</DT>

<DD>participant of D<FONT SIZE=-1>ECORATOR</FONT>
<A HREF="pat4dfs.htm#participants" TARGET="_mainDisplayFrame">177</A>,
<A HREF="pat4dfs.htm#structure" TARGET="_mainDisplayFrame"><I>177c</I></A>
</DD>

<DT>ConcreteD<FONT SIZE=-1>ECORATOR</FONT></DT>

<DD>participant of D<FONT SIZE=-1>ECORATOR</FONT>
<A HREF="pat4dfs.htm#structure" TARGET="_mainDisplayFrame"><I>177c</I></A>,
<A HREF="pat4dfs.htm#participants" TARGET="_mainDisplayFrame">178</A>
</DD>

<DT>ConcreteElement</DT>

<DD>participant of V<FONT SIZE=-1>ISITOR</FONT>
<A HREF="pat5kfs.htm#participants" TARGET="_mainDisplayFrame">334</A>,
<A HREF="pat5kfs.htm#structure" TARGET="_mainDisplayFrame"><I>334c</I></A>,
<A HREF="pat5kfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>335i</I></A>
</DD>

<DT>ConcreteFactory</DT>

<DD>participant of A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT>
<A HREF="pat3afs.htm#participants" TARGET="_mainDisplayFrame">89</A>
</DD>

<DT>ConcreteFlyweight</DT>

<DD>participant of F<FONT SIZE=-1>LYWEIGHT</FONT><A HREF="pat4ffs.htm#structure" TARGET="_mainDisplayFrame"><I>198co</I></A>,
<A HREF="pat4ffs.htm#participants" TARGET="_mainDisplayFrame">199</A>
</DD>

<DT>ConcreteHandler</DT>

<DD>participant of C<FONT SIZE=-1>HAIN OF</FONT>
	R<FONT SIZE=-1>ESPONSIBILITY</FONT>
<A HREF="pat5afs.htm#structure" TARGET="_mainDisplayFrame"><I>225c</I></A>,
<A HREF="pat5afs.htm#participants" TARGET="_mainDisplayFrame">226</A>
</DD>

<DT>ConcreteImplementor</DT>

<DD>participant of B<FONT SIZE=-1>RIDGE</FONT>
<A HREF="pat4bfs.htm#structure" TARGET="_mainDisplayFrame"><I>153c</I></A>,
<A HREF="pat4bfs.htm#participants" TARGET="_mainDisplayFrame">154</A>
</DD>

<DT>ConcreteI<FONT SIZE=-1>TERATOR</FONT></DT>

<DD>participant of I<FONT SIZE=-1>TERATOR</FONT>
<A HREF="pat5dfs.htm#participants" TARGET="_mainDisplayFrame">259</A>,
<A HREF="pat5dfs.htm#structure" TARGET="_mainDisplayFrame"><I>259c</I></A>
</DD>

<DT>ConcreteO<FONT SIZE=-1>BSERVER</FONT></DT>

<DD>participant of O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="pat5gfs.htm#structure" TARGET="_mainDisplayFrame"><I>294c</I></A>,
<A HREF="pat5gfs.htm#participants" TARGET="_mainDisplayFrame">295</A>,
<A HREF="pat5gfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>295i</I></A>
</DD>

<DT>ConcreteProduct</DT>

<DD>participant of A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT>
<A HREF="pat3afs.htm#structure" TARGET="_mainDisplayFrame">88</A>,
<A HREF="pat3afs.htm#participants" TARGET="_mainDisplayFrame">89</A>
</DD>

<DD>participant of F<FONT SIZE=-1>ACTORY</FONT> M<FONT SIZE=-1>ETHOD</FONT>
<A HREF="pat3cfs.htm#participants" TARGET="_mainDisplayFrame">108</A>,
<A HREF="pat3c.htm#structure" onClick="top.load('3c');"<I>108c</I></A>
</DD>

<DT>ConcreteP<FONT SIZE=-1>ROTOTYPE</FONT></DT>

<DD>participant of P<FONT SIZE=-1>ROTOTYPE</FONT>
<A HREF="disc4fs.htm#top" TARGET="_mainDisplayFrame">119</A>,
<A HREF="disc4fs.htm#top" TARGET="_mainDisplayFrame"><I>119c</I></A>
</DD>

<DT>ConcreteState</DT>

<DD>participant of S<FONT SIZE=-1>TATE</FONT>
<A HREF="pat5hfs.htm#participants" TARGET="_mainDisplayFrame">307</A>,
<A HREF="pat5hfs.htm#structure" TARGET="_mainDisplayFrame"><I>307c</I></A>
</DD>

<DT>ConcreteStrategy</DT>

<DD>participant of S<FONT SIZE=-1>TRATEGY</FONT><A HREF="pat5ifs.htm#structure" TARGET="_mainDisplayFrame"><I>316c</I></A>,
<A HREF="pat5ifs.htm#participants" TARGET="_mainDisplayFrame">316</A>
</DD>

<DT>ConcreteSubject</DT>

<DD>participant of O<FONT SIZE=-1>BSERVER</FONT>
<A HREF="pat5gfs.htm#structure" TARGET="_mainDisplayFrame"><I>294c</I></A>,
<A HREF="pat5gfs.htm#participants" TARGET="_mainDisplayFrame">295</A>,
<A HREF="pat5gfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>295i</I></A>
</DD>

<DT>ConcreteVisitor</DT>

<DD>participant
<A HREF="pat5kfs.htm#participants" TARGET="_mainDisplayFrame">334</A>,
<A HREF="pat5kfs.htm#structure" TARGET="_mainDisplayFrame"><I>334c</I></A>,
<A HREF="pat5kfs.htm#collaborations" TARGET="_mainDisplayFrame"><I>335i</I></A>
</DD>

<DT>conditional statements</DT>

<DD>avoiding using S<FONT SIZE=-1>TATE</FONT>
<A HREF="pat5hfs.htm#consequences" TARGET="_mainDisplayFrame">307</A>
</DD>

<DD>avoiding using S<FONT SIZE=-1>TRATEGY</FONT><A HREF="pat5ifs.htm#consequences" TARGET="_mainDisplayFrame">317</A>
</DD>

<DT>consolidation phase of lifecycle
<A HREF="chap6fs.htm#objectmodel" TARGET="_mainDisplayFrame">353</A>
</DT>

<DT>constraint solving
<A HREF="pat5efs.htm#knownuses" TARGET="_mainDisplayFrame">282</A>,
<A HREF="pat5ffs.htm#motivation" TARGET="_mainDisplayFrame">283</A>
</DT>

<DD><I>see also</I> <A HREF="index-T.htm#ThingLab" target="TEXT">ThingLab</A>, <A HREF="index-Q.htm#QOCA" target="TEXT">QOCA</A></DD>

<DT>ConstraintSolver
<A HREF="pat5ffs.htm#motivation" TARGET="_mainDisplayFrame">283-284</A>,
<A HREF="pat5ffs.htm#samplecode" TARGET="_mainDisplayFrame">288</A>
</DT>

<DT>constructor
<A HREF="chapAfs.htm#constructor" TARGET="_mainDisplayFrame"><B>360</B></A>
</DT>

<DT>Context
<A HREF="pat5cfs.htm#buildabssyn" TARGET="_mainDisplayFrame">252</A>
</DT>

<DD>participant of I<FONT SIZE=-1>NTERPRETER</FONT><A HREF="pat5cfs.htm#structure" TARGET="_mainDisplayFrame"><I>245c</I></A>,
<A HREF="pat5cfs.htm#participants" TARGET="_mainDisplayFrame">246</A>
</DD>

<DD>participant of S<FONT SIZE=-1>TATE</FONT>
<A HREF="pat5hfs.htm#participants" TARGET="_mainDisplayFrame">306</A>,
<A HREF="pat5hfs.htm#structure" TARGET="_mainDisplayFrame"><I>306c</I></A>
</DD>

<DD>participant of S<FONT SIZE=-1>TRATEGY</FONT><A HREF="pat5ifs.htm#structure" TARGET="_mainDisplayFrame"><I>316c</I></A>,
<A HREF="pat5ifs.htm#participants" TARGET="_mainDisplayFrame">316</A>
</DD>

<DT>control flow</DT>

<DD>encapsulating, <I>see</I> <A HREF="index-M.htm#M<FONT SIZE=-1>EDIATOR</FONT>" target="TEXT">M<FONT SIZE=-1>EDIATOR</FONT></A></DD>

<DD>inversion of
<A HREF="chap1fs.htm#appprog" TARGET="_mainDisplayFrame">27</A>
</DD>

<DT>Coplien, James
<A HREF="pat3dfs.htm#knownuses" TARGET="_mainDisplayFrame">125</A>,
<A HREF="pat4bfs.htm#implementation" TARGET="_mainDisplayFrame">153</A>,
<A HREF="pat4bfs.htm#knownuses" TARGET="_mainDisplayFrame">160</A>,
<A HREF="pat5bfs.htm#knownuses" TARGET="_mainDisplayFrame">242</A>,
<A HREF="pat5hfs.htm#knownuses" TARGET="_mainDisplayFrame">313</A>,
<A HREF="chap6fs.htm#anderson" TARGET="_mainDisplayFrame">357</A>
</DT>

<DT><a name="copy"></a>copy</DT>

<DD>deep
<A HREF="pat3dfs.htm#implementation" TARGET="_mainDisplayFrame">121</A>
</DD>

<DD>on write
<A HREF="pat4gfs.htm#consequences" TARGET="_mainDisplayFrame">210</A>
</DD>

<DD>shallow
<A HREF="pat3dfs.htm#implementation" TARGET="_mainDisplayFrame">121</A>
</DD>

<DT>CountingMazeBuilder
<A HREF="pat3bfs.htm#samplecode" TARGET="_mainDisplayFrame">104</A>
</DT>

<DT><a name="coupling"></a>coupling
<A HREF="chapAfs.htm#coupling" TARGET="_mainDisplayFrame"><B>360</B></A>
</DT>

<DD>abstract
<A HREF="pat4efs.htm#implementation" TARGET="_mainDisplayFrame">188</A>,
<A HREF="pat5efs.htm#implementation" TARGET="_mainDisplayFrame">278</A>,
<A HREF="pat5gfs.htm#consequences" TARGET="_mainDisplayFrame">296</A>,
<A HREF="chapAfs.htm#abstractcoupling" TARGET="_mainDisplayFrame">359</A>
</DD>

<DD>loose
<A HREF="chap1fs.htm#depalg" TARGET="_mainDisplayFrame">24</A>,
<A HREF="chap1fs.htm#appprog" TARGET="_mainDisplayFrame">26</A>,
<A HREF="pat5efs.htm#consequences" TARGET="_mainDisplayFrame">277</A>,
<A HREF="disc5fs.htm#top" TARGET="_mainDisplayFrame">347</A>, 
<I>see also</I> <A HREF="index-D.htm#decoupling" target="TEXT">decoupling</A>
</DD>

<DD>reducing
<A HREF="chap1fs.htm#depalg" TARGET="_mainDisplayFrame">24</A>,
<A HREF="pat4efs.htm#consequences" TARGET="_mainDisplayFrame">187</A>,
<A HREF="pat4efs.htm#implementation" TARGET="_mainDisplayFrame">188</A>,
<A HREF="pat5afs.htm#motivation" TARGET="_mainDisplayFrame">223</A>,
<A HREF="pat5afs.htm#consequences" TARGET="_mainDisplayFrame">226</A>
</DD>

<DD>tight
<A HREF="chap1fs.htm#depalg" TARGET="_mainDisplayFrame">24</A>,
</DD>

<DT>CreateMaze operation 
<A HREF="chap3-0.htm#CreateMaze-def" onClick="top.load('3');">84</A>
</DT>

<DD>A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT> variant (C++)
<A HREF="pat3afs.htm#samplecode" TARGET="_mainDisplayFrame">92</A>
</DD>

<DD>A<FONT SIZE=-1>BSTRACT</FONT> F<FONT SIZE=-1>ACTORY</FONT> variant
	(Smalltalk)
<A HREF="pat3afs.htm#MazeFactory-def" TARGET="_mainDisplayFrame">94</A>
</DD>

<DD>B<FONT SIZE=-1>UILDER</FONT> variant
<A HREF="pat3bfs.htm#samplecode" TARGET="_mainDisplayFrame">102</A>
</DD>

<DD>F<FONT SIZE=-1>ACTORY</FONT> M<FONT SIZE=-1>ETHOD</FONT> variant
<A HREF="pat3cfs.htm#samplecode" TARGET="_mainDisplayFrame">114</A>
</DD>

<DD>P<FONT SIZE=-1>ROTOTYPE</FONT> variant (Smalltalk)
<A HREF="pat3dfs.htm#samplecode" TARGET="_mainDisplayFrame">123</A>,
<A HREF="pat3dfs.htm#samplecode" TARGET="_mainDisplayFrame">125</A>
</DD>

<DT>creational pattern
<A HREF="chap1fs.htm#behpat" TARGET="_mainDisplayFrame"><B>10</B></A>,
<A HREF="chap3fs.htm#top" TARGET="_mainDisplayFrame">81</A>
</DT>

<DD>discussion of
<A HREF="disc3fs.htm#top" TARGET="_mainDisplayFrame">135</A>
</DD>

<DT>Creator</DT>

<DD>participant of F<FONT SIZE=-1>ACTORY</FONT> M<FONT SIZE=-1>ETHOD</FONT>
<A HREF="pat3cfs.htm#top" TARGET="_mainDisplayFrame">108</A>,
<A HREF="pat3cfs.htm#applicability" TARGET="_mainDisplayFrame"><I>108c</I></A>
</DD>

<DD>implementation of
<A HREF="pat3cfs.htm#implementation" TARGET="_mainDisplayFrame">111</A>,
<A HREF="pat3cfs.htm#implementation" TARGET="_mainDisplayFrame">113</A>
</DD>

<DT>Cursor, <I>see</I> <A HREF="index-I.htm#I<FONT SIZE=-1>TERATOR</FONT>" target="TEXT">I<FONT SIZE=-1>TERATOR</FONT></A></DT>

<DT>cursor, <I>see</I> <A HREF="index-I.htm#iterator" target="TEXT">iterator, cursor</A></DT>

</DL>

